# def eat(food1,food2,food3):
#     print(f'我请你吃：{food1},{food2},{food3}')
# eat('蒸羊羔','蒸熊掌','蒸鹿尾')

# 当给函数传入的参数数目不定时，之前的传参方式解决不了问题。
# 万能参数，动态参数。 *args
# def eat(food1,food2,food3):
#     print(f'我请你吃：{food1},{food2},{food3}')
# eat('蒸羊羔','蒸熊掌','蒸鹿尾','烧花鸭','烧企鹅')

def eat(*args):  # 将实参角度：定义一个函数时，* 所有的位置参数聚合到一个元组中。
    print(args)
    print(f'我请你吃：{args}')
# eat('蒸羊羔','蒸熊掌','蒸鹿尾','烧花鸭','烧企鹅')

# 函数接收不定个数的数字实参，将最终的和返回出去。

# def sum1(*args):
#     # print(args)  (100, 2, 67, 3)
#     result = 0
#     for i in args:
#         result += i
#     return result
# print(sum1(100,2,67,3))

# **kwargs

# def func(**kwargs):  # 函数的定义时：**将实参角度所有的关键字参数聚合成了一个字典，给了kwargs.
#     print(kwargs)
# func(name='alex',age=84,hobby='唱跳rap篮球')

# *args,**kwargs 万能参数
def func(*args,**kwargs):
    print(args,kwargs)

# func(1,2,4,'fjdksal',age=84,hobby='唱跳rap篮球')

# *的魔性用法： （函数中）

# def func(*args,**kwargs):
#     print(args)  # (1, 2, 3,'太白', 'wusir', '景女神')
#     print(kwargs)

# l1 = [1, 2, 3]
# l2 = ['太白', 'wusir', '景女神']
# # func(l1,l2)
# # func(*l1,*l2)  # 当函数的执行时：*iterable 代表打散。
# func(*[1, 2, 3],*(11,22),*'fdsakl')  # 当函数的执行时：*iterable 代表打散。

# def func(*args,**kwargs):
#     print(args)
#     print(kwargs)
# func(**{'name':"alex"},**{'age': 73,'hobby': '吹'})
#当函数的执行时：**dict 代表打散。


# 函数外：处理剩余元素
# a,b,*c = [1,2,3,4,5]
# a,*c,b, = [1,2,3,4,5]
# a,*c = range(5)
# a,*c,b = (1,2,3,4,5,6)
# print(a,c,b)
